[
  {
    "type": "arg_mapping",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "arg_mapping_to",
          "named": true
        },
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "arg_mapping_to",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binding",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "binding_cps",
          "named": true
        },
        {
          "type": "binding_plain",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binding_cps",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "cps_pattern",
          "named": true
        },
        {
          "type": "expr",
          "named": true
        },
        {
          "type": "ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binding_plain",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        },
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "binding",
          "named": true
        },
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        },
        {
          "type": "native_body",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bytes",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "byte",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_ordered",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_unordered",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "arg_mapping",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cast",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cond",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "cond_pattern",
          "named": true
        },
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cond_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "cps_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decl_const",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "body",
          "named": true
        },
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decl_entry",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decl_func",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "body",
          "named": true
        },
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "sig",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decl_method",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "body",
          "named": true
        },
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "receiver",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "decl_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "impl",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "type_def",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "docs",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "doc",
          "named": true
        }
      ]
    }
  },
  {
    "type": "elif",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        },
        {
          "type": "cond",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "enum_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_item",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expr",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "cast",
          "named": true
        },
        {
          "type": "pipe",
          "named": true
        },
        {
          "type": "term",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "field_default",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_default",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "cond",
          "named": true
        },
        {
          "type": "elif",
          "named": true
        },
        {
          "type": "if_no",
          "named": true
        },
        {
          "type": "if_yes",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_no",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_yes",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "impl",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "ref_base",
          "named": true
        }
      ]
    }
  },
  {
    "type": "implicit",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "inputs",
          "named": true
        }
      ]
    }
  },
  {
    "type": "infix_left",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "infix_right",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "infix_term",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "infix_left",
          "named": true
        },
        {
          "type": "infix_right",
          "named": true
        },
        {
          "type": "operator",
          "named": true
        }
      ]
    }
  },
  {
    "type": "inputs",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "record_def",
          "named": true
        }
      ]
    }
  },
  {
    "type": "interface",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "method",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expr",
          "named": true
        },
        {
          "type": "lambda_self",
          "named": true
        },
        {
          "type": "pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lambda_self",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "method",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "docs",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "native_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "text",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ns",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ns_prefix",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "operator",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "output",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "pattern_multiple",
          "named": true
        },
        {
          "type": "pattern_single",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pattern_multiple",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pattern_single",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "pipe_call",
          "named": true
        },
        {
          "type": "pipe_cast",
          "named": true
        },
        {
          "type": "pipe_get",
          "named": true
        },
        {
          "type": "pipe_infix",
          "named": true
        },
        {
          "type": "pipe_interior",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe_call",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "call_ordered",
          "named": true
        },
        {
          "type": "call_unordered",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe_cast",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "cast",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe_get",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe_infix",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "pipe_call",
          "named": true
        },
        {
          "type": "ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipe_interior",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ref_base",
          "named": true
        }
      ]
    }
  },
  {
    "type": "receiver",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "record",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "record_def",
          "named": true
        }
      ]
    }
  },
  {
    "type": "record_def",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ref",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "ref_base",
          "named": true
        },
        {
          "type": "type_args",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ref_base",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        },
        {
          "type": "ns_prefix",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ref_term",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sig",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "implicit",
          "named": true
        },
        {
          "type": "inputs",
          "named": true
        },
        {
          "type": "output",
          "named": true
        },
        {
          "type": "type_params",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "ns",
          "named": true
        },
        {
          "type": "stmt",
          "named": true
        }
      ]
    }
  },
  {
    "type": "stmt",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "decl_const",
          "named": true
        },
        {
          "type": "decl_entry",
          "named": true
        },
        {
          "type": "decl_func",
          "named": true
        },
        {
          "type": "decl_method",
          "named": true
        },
        {
          "type": "decl_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "string_part",
          "named": true
        },
        {
          "type": "text",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_part",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "string_part_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_part_content",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "char",
          "named": true
        },
        {
          "type": "text",
          "named": true
        }
      ]
    }
  },
  {
    "type": "term",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        },
        {
          "type": "bytes",
          "named": true
        },
        {
          "type": "char",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "if",
          "named": true
        },
        {
          "type": "infix_term",
          "named": true
        },
        {
          "type": "int",
          "named": true
        },
        {
          "type": "lambda",
          "named": true
        },
        {
          "type": "ref_term",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "when",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_args",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_def",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "enum",
          "named": true
        },
        {
          "type": "interface",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "union",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_params",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "union",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "when",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "case",
          "named": true
        },
        {
          "type": "expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "..",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": "::",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "byte",
    "named": true
  },
  {
    "type": "char",
    "named": true
  },
  {
    "type": "const",
    "named": false
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "doc",
    "named": true
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "entry",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "float",
    "named": true
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "int",
    "named": true
  },
  {
    "type": "interface",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "method",
    "named": false
  },
  {
    "type": "name",
    "named": true
  },
  {
    "type": "namespace",
    "named": false
  },
  {
    "type": "native",
    "named": false
  },
  {
    "type": "new",
    "named": false
  },
  {
    "type": "operator",
    "named": false
  },
  {
    "type": "record",
    "named": false
  },
  {
    "type": "text",
    "named": true
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "union",
    "named": false
  },
  {
    "type": "variadic",
    "named": false
  },
  {
    "type": "when",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]